package org.zxyj.core.dao;

import java.util.List;
import java.util.Map;

/**
 * @author zhaoyong
 * @version 2016年2月18日
 */
public interface IBaseDao<T> {

	/**
	 * 查询所有数据
	 * 
	 * @return List<T>
	 */
	List<T> findAll();

	/**
	 * 根据条件查询数据
	 * 
	 * @param criteria
	 * @return List<T>
	 */
	List<T> find(Map<String, Object> criteria);

	/**
	 * 根据条件查询单条数据
	 * 
	 * @param criteria
	 * @return T
	 */
	T findById(Map<String, Object> criteria);

	/**
	 * 查询数据条数
	 * 
	 * @param criteria
	 * @return Long
	 */
	Long count(Map<String, Object> criteria);

	/**
	 * 插入单条数据
	 * 
	 * @param entity
	 * @return int
	 */
	int insert(T entity);

	/**
	 * 批量插入数据
	 * 
	 * @param entities
	 * @return
	 */
	int batchInsert(List<T> entities);

	/**
	 * 更新单条数据
	 * 
	 * @param entity
	 * @return int
	 */
	int update(T entity);

	/**
	 * 批量更新数据
	 * 
	 * @param entities
	 * @return int
	 */
	int batchUpdate(List<T> entities);

	/**
	 * 删除数据
	 * 
	 * @param criteria
	 * @return int
	 */
	int delete(Map<String, Object> criteria);

}